﻿//获取URL参数
function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]); return null;
}


//为避免冲突，将我们的方法用一个匿名方法包裹起来
(function ($) {
    //扩展这个方法到jquery
    $.fn.extend({
        //回车按钮事件
        keydownExtend: function (options) {
            var defaults = {
                objEvent: function () { alert("你刚刚按了回车键哦"); }
            };
            var options = $.extend(defaults, options);
            return this.each(function () {
                $(this).keydown(function () {
                    if (event.keyCode == "13") {
                        options.objEvent();
                    }
                })
            })
        },
        //加载datagrid方法
        initGrid: function (options) {
            var defaults = {
                columns: [[]],//列名
                frozenColumns: [[]],//固定列
                fitColumns: true,//是否撑满列
                resizeHandle: "right",//用户可以通过拖拽调整列宽,'left','right','both'.
                autoRowHeight: false,//定义是否设置行高基于这一行的内容。设置为false可以提高加载性能。
                striped: true, //即奇偶行使用不同背景色
                method: 'post',
                fit: true,//是否撑满
                nowrap: true,//不换行
                idField: null,
                url: '',//数据来源
                data: null,//表格数据
                loadMsg: '正在拼命加载。。。',
                emptyMsg: '没有更多数据',
                pagination: true,//显示分页栏
                rownumbers: true,//显示行号
                singleSelect: false,//是否单选
                ctrlSelect: true,//允许按住ctrl选择数据行
                checkOnSelect: true,//点击数据行选中数据
                selectOnCheck: true,//
                pagePosition: 'bottom',//'top','bottom','both'工具栏位置
                pageNumber: 1,//页码
                pageSize: 20,//一页显示多少数据
                pageList: [10, 20, 30, 40, 50],
                queryParams: {},//自定义查询参数
                sortName: null,//排序字段
                sortOrder: 'asc',//排序方式
                multiSort: false,//允许多个字段排序
                remoteSort: true,//定义是否来自服务器的数据进行排序
                showHeader: true,//是否显示头部
                showFooter: false,//是否显示合计行
                scrollbarSize: 18,//滚动条的宽度(垂直滚动条时)或高度(水平滚动条时)
                rownumberWidth: 30,//行号列的宽度
                editorHeight: 24,//默认编辑器高度
                rowStyler: function (index, row) { },//修改行颜色
                //loadFilter: function (data) {
                //    if (data.rows) {
                //        return data.rows;
                //    }
                //    else {
                //        return data;
                //    }
                //},//过滤数据
                onSortColumn: function (sort, order) {
                    var params = $(this).datagrid('options').queryParams;
                    params.sortName = sort;
                    params.sortOrder = order;
                    $(this).datagrid('reload');
                },//排序
                onLoadSuccess: function (data) {
                },
                onLoadError: function () {
                }
            };

            var options = $.extend(defaults, options);


            //遍历匹配元素的集合
            return this.each(function () {
                //在这里编写相应代码进行处理 
                $(this).datagrid(options);

                //用fit=true属性替代
                //$(this).datagrid('resize', {
                //    height: $(this).parent().parent().parent().parent().height(),
                //    width: $(this).parent().parent().parent().parent().width()
                //});

            });
        }
    });
    //传递jQuery到方法中，这样我们可以使用任何javascript中的变量来代替"$"      
})(jQuery);


//加载查询框
(function ($) {
    $.fn.extend({
        initSearchBar: function (options) {
            var defaults = {
                searchBarClass: "SearchBar",//头部查询框样式
                leftClass: "left",//左边标题样式
                title: "default title",//菜单标题
                toolbarClass: "toolbar",//查询框样式
                searchbtnClass: "searchbtn",//查询按钮样式
                dropClass: "drop",//三角形样式
                boxClass: "box",//查询输入框样样式
                rightClass: "right",//按钮操作toolbar的样式
                btntoolClass: "btntool",//按钮所在的div样式
                searchClass: "search",//查询按钮样式
                clearClass: "clear",//清空按钮样式
                cancelClass: "cancel",//取消按钮样式
                searchboxClass: "searchbox",//查询条件样式
                searchboxWidth: 240,//查询box默认宽度


                showbtnAdd: true,//显示新增按钮
                btnAddidValue: "btnAdd",
                btnAddtextValue: "新增",
                btnAddoptions: "plain:true,iconCls:'icon-add'",
                btnAddcallback: function () { alert("add"); },

                showbtnDel: true,//显示删除按钮
                btnDelidValue: "btnDel",
                btnDeltextValue: "删除",
                btnDeloptions: "plain:true,iconCls:'icon-del'",
                btnDelcallback: function () { alert("del"); },

                buttonList: [],//自定义按钮
                searchEvent: function () { initGrid(); },//查询按钮事件
                clearEvent: function () { clearSearch(this); },
                cancelEvent: function () { $(this).parent().parent().hide(); },//取消按钮事件
                noOptionWidth: 240,//没有内容时默认宽度
                dropToggle: true,//三角形是否交替点击
                dropHover: true//三角形是否移入移除事件
            };

            var options = $.extend(defaults, options);

            //遍历匹配元素的集合
            return this.each(function () {
                var $obj = $(this);

                //添加查询按钮和取消按钮
                var bar = '';
                bar += '<div class="' + options.searchBarClass + '">';
                bar += '<div class="' + options.leftClass + '">' + options.title + '</div>';
                bar += '<div class="' + options.toolbarClass + '">';
                bar += '<a class="' + options.searchbtnClass + '">搜索</a>';
                bar += '<div class="' + options.dropClass + '"></div>';
                bar += '<input type="text" class="' + options.boxClass + '" id="txt_Search" />';
                bar += '</div>';
                bar += '<div class="' + options.rightClass + '">';
                bar += '</div>';
                bar += '</div>';
                $obj.append(bar);

                var $right = $("." + options.rightClass);

                if (options.showbtnAdd) {
                    $right.append('<a id="' + options.btnAddidValue + '" class="easyui-linkbutton" data-options="' + options.btnAddoptions + '">' + options.btnAddtextValue + '</a>');
                    $("#" + options.btnAddidValue).linkbutton();
                    if (options.btnAddcallback != undefined && typeof (options.btnAddcallback) == "function")
                        $("#" + options.btnAddidValue).linkbutton({ onClick: options.btnAddcallback });
                }

                if (options.showbtnDel) {
                    $right.append('<a id="' + options.btnDelidValue + '" class="easyui-linkbutton" data-options="' + options.btnDeloptions + '">' + options.btnDeltextValue + '</a>');
                    $("#" + options.btnDelidValue).linkbutton();
                    if (options.btnDelcallback != undefined && typeof (options.btnDelcallback) == "function")
                        $("#" + options.btnDelidValue).linkbutton({ onClick: options.btnDelcallback });
                }

                //添加自定义按钮
                $.each(options.buttonList, function (index, item) {
                    $right.append('<a id="' + item.id + '" class="easyui-linkbutton" data-options="' + item.options + '">' + item.text + '</a>');
                    $("#" + item.id).linkbutton();
                    if (item.callback != undefined && typeof (item.callback) == "function")
                        $("#" + item.id).linkbutton({ onClick: item.callback });
                })

                var $searchbox = $("." + options.searchboxClass);

                if (typeof (options.searchboxWidth) == "number") {
                    $searchbox.width(options.searchboxWidth);
                }

                if ($searchbox.length == 0) {
                    $("." + options.dropClass).hide();
                    return;
                }

                var searchbtn = '';
                searchbtn += '<div class="' + options.btntoolClass + '">';
                searchbtn += '<div class="' + options.searchClass + '">查询</div>';
                searchbtn += '<div class="' + options.clearClass + '">清空</div>';
                searchbtn += '<div class="' + options.cancelClass + '">取消</div>';
                searchbtn += '</div>';
                $searchbox.append(searchbtn);


                //搜索按钮回车事件绑定
                $("." + options.searchBarClass).keydownExtend({ objEvent: function () { $("." + options.searchbtnClass).click() } });
                //搜索按钮点击事件绑定
                $("." + options.searchbtnClass).bind("click", options.searchEvent);
                //查询按钮点击事件绑定
                $searchbox.delegate("." + options.searchClass, "click", options.searchEvent);
                $searchbox.keydownExtend({ objEvent: function () { $("." + options.searchClass).click() } });

                //清空按钮点击事件绑定
                $searchbox.delegate("." + options.clearClass, "click", options.clearEvent);
                //取消按钮点击事件绑定
                $searchbox.delegate("." + options.cancelClass, "click", options.cancelEvent);

                //查询和取消按钮样式居中
                var totalwidth = $searchbox.width();
                var leftwidth = (totalwidth - 168) / 2;

                $("." + options.searchClass).css("margin-left", leftwidth);

                if (options.dropToggle) {
                    $("." + options.dropClass).click(function () {
                        $searchbox.toggle();
                    })
                }
                if (options.dropHover) {
                    $("." + options.dropClass).hover(function () {
                        $searchbox.show();
                    }, function () {
                        //$obj.hide();
                    });
                }
            });
        }
    });
})(jQuery);

(function ($) {
    $.fn.extend({
        //datagrid删除事件
        deleteCallBack: function (options) {
            var defaults = {
                idValue: "",
                action: "",
                value: ""
            }

            var options = $.extend(defaults, options);

            return this.each(function () {
                var $obj = $(this);

                var idList = new Array();
                if (options.value != "") {
                    idList.push(options.value);
                }
                else {
                    var rows = $obj.datagrid("getSelections");
                    if (rows.length == 0) {
                        $.messager.alert("提示", "请选择要删除的记录", "info");
                        return false;
                    }
                    $.each(rows, function (index, item) {
                        idList.push(item[options.idValue]);
                    });
                }

                if (idList.length == 0) {
                    $.messager.alert("提示", "请选择要删除的记录", "info");
                    return false;
                }
                $.messager.confirm("提示", "确定要删除所选记录吗？", function (r) {
                    if (r) {
                        $.post(options.action, { deleteId: idList.toString() }, function (json) {
                            if (!json.success) {
                                $.messager.alert("提示", "删除失败：<br/>" + json.msg, "error");
                                return false;
                            }
                            $obj.datagrid("reload");
                        }, "json");
                    }
                })
            });
        }
    })
})(jQuery);


//清空查询条件
function clearSearch(obj) {
    $(obj).parent().parent().form("clear");
}

//删除方法--适用于列表上面的单行选择删除
function deleteInfo(action, value, obj) {
    obj = obj == undefined ? "#tt" : obj;
    $(obj).deleteCallBack({ action: action, value: value });
}